package com.lhy.ltss.session;

import com.lhy.ltss.entity.User;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpSession;

/**
 * @description:
 * 用户会话信息管理
 * @author: 李汇远
 */
@Component
public class UserManage extends DefaultManage {

    public final static String USERNAME = "username";
    public final static String ROLE = "role";
    private final static String IS_LOGIN = "has login";

    /**
     * 保存用户信息
     * @param user
     * @param maxTime 会话最大有效时间 单位：秒
     */
    public void saveUser(User user, int maxTime){
        HttpSession session = getCurrentSession();
        session.setMaxInactiveInterval(maxTime);
        session.setAttribute(USERNAME, user.getUsername());
        session.setAttribute(ROLE, user.getRole());
        session.setAttribute(IS_LOGIN, true);
    }

    public void saveUser(User user){
        saveUser(user, 60 * 60 * 12);
    }

    /**
     * 当前用户是否登录成功
     * @return
     */
    public boolean isLogin(){
        HttpSession session = getCurrentSession();
        Boolean  login = (Boolean) session.getAttribute(IS_LOGIN);
        return login != null && login;
    }

    /**
     * 清除当前会话内容
     */
    public void clearUser(){
        getCurrentSession().invalidate();
    }

    /**
     * 获取当前登录用户的用户名
     * @return
     */
    public String getUsername(){
        return (String) getCurrentSession().getAttribute(USERNAME);
    }

    /**
     * 获取当前用户的角色
     * @return
     */
    public String getRole(){
        Object o =  getCurrentSession().getAttribute(ROLE);
        return o == null ? "" : (String) o;
    }


}
